<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>数组</h1>

<script>

    //1.java类似数组的初始化分为静态初始化和动态初始化。
    /*
    let arr1 = [1,2,3,4,5]; //静态初始化
    let arr2 = new Array(1,2,3,4,5); //动态初始化
    console.log(arr1);
    console.log(arr2);*/


    //2.Array的长度，直接访问length属性
    /*
    let arr1 = [1,2,3,4,5]; //静态初始化
    let arr2 = new Array(1,2,3,4,5); //动态初始化
    //修改某个元素值
    arr1[4]=100;
    //修改数组长度，引起数组大小变化
    arr1.length = 10;
    console.log(arr1);
    //下标超出范围，引起数组大小变化
    arr2[9] = 10;
    console.log(arr2);*/


    //3.ES5使用中使用new Array创建数组存在以下歧义性。
    /*
    let arr1 = new Array(5); //只有一个参数，表示声明一个长度为5的数组，元素都是undefined
    let arr2 = new Array(1,2,3,4,5); //声明一个长度为5的数组，元素值为[1,2,3,4,5]

    for(let i=0;i<arr1.length;i++){
        console.log(arr1[i]);
    }

    for(let i=0;i<arr2.length;i++){
        console.log(arr2[i]);
    }*/

    //4.ES6推荐使用Array.of或者Array.from
    /*
    let arr1 = Array.of(5); //只有一个参数也表示声明一个长度为1的数组，元素都是5
    let arr2 = Array.of(1,2,3,4,5); //声明一个长度为5的数组，元素值为[1,2,3,4,5]
    let arr3 = Array.from([1,2,3,4,5]);////声明一个长度为5的数组，元素值为[1,2,3,4,5]
    //把对象转换为数组
    let arr4 = Array.from({
        0: 'zhangsan',
        1: 20,
        2: 'male',
        length:3
    })
    for(let i=0;i<arr1.length;i++){
        console.log(arr1[i]);
    }

    for(let i=0;i<arr2.length;i++){
        console.log(arr2[i]);
    }

    for(let i=0;i<arr3.length;i++){
        console.log(arr3[i]);
    }
    console.log(arr4);*/


    //5.数组有五种遍历方式：
    let stus = ['张三', '李四', '王五', '赵六'];
    //1.for循环
    for (let i = 0; i < stus.length; i++) {
        console.log(stus[i]);
    }

    //2.forEach
    stus.forEach(function (e, i) {
        console.log("第" + i + "个元素是：" + e);
    })
    //或者使用箭头函数，精简写法
    stus.forEach((e, i) => {
        console.log("第" + i + "个元素是：" + e);
    })

    //3.for in
    for (let index in stus) {
        console.log(stus[index]);
    }

    //4.for of
    for (let value of stus) {
        console.log(value);
    }

    //5. map
    stus.map((v, index) => {
        console.log(v);
        //return;
    })

</script>
</body>
</html>